home *** CD-ROM | disk | FTP | other *** search
/ Languguage OS 2 / Languguage OS II Version 10-94 (Knowledge Media)(1994).ISO / language / embedded / mcu / float09.arc / OLDISPAT.SA < prev    next >
Text File  |  1987-03-04  |  5KB  |  222 lines

  1.  NAM DISPCH
  2.  TTL  DISPATCH OPERATION THROUGH THE FUNCTION TABLES
  3. *
  4. * LINKING LOADER DEFINITONS
  5. *
  6.   XDEF    DISPAT
  7. *
  8.   XREF    FMUL
  9.   XREF    FADD,CHKZER,CHKINF
  10.   XREF    FDIV,DIVZER
  11.   XREF    FREM
  12.   XREF    FSQRT,SQINCK
  13.   XREF    GETINT
  14.   XREF    MAGCMP,CMPZER,CMPINF,NANCMP,INFAR1
  15.   XREF    INFAR2,ARG1UN,ARG2UN,BOTHUN
  16.   XREF    FFIX,BIGINT
  17.   XREF    BDCNVT,OUTNDC
  18.   XREF    FMOVE,MOVUN
  19.   XREF    FABS,FNEG
  20.   XREF    RTAR1,RTAR2,RTNAN,RTINF,RTDNAN
  21.   XREF    RTZERO,NAN1,NAN3,NAN4,NAN9,NAN10
  22.   XREF    ROMSTR
  23.   XREF    DECBIN,FLOAT
  24. *
  25. * REVISION HISTORY:
  26. *
  27. *  DATE     PROGRAMMER       REASON
  28. *
  29. *  01.JUL.80    G. STEVENS       ORIGINAL
  30. *
  31.  PAGE
  32. ***************************************************
  33. *
  34. *    DISPAT --
  35. *      THIS SUBROUTINE USES THE FUNCTION CODE TO
  36. *    SELECTION A FUNCTION TABLE. IT THEN USES THE TYPES
  37. *    OF THE ARGUMENTS TO JUMP THROUGH THE ADDRESSES IN
  38. *    THE FUNCTION TABLE TO THE PROPER SUBROUTINE TO
  39. *    PERFORM THE FUNCTION.
  40. *
  41. *      NO REGISTERS ARE PRESERVED; ALL RELEVANT STATE
  42. *    IS STORED IN THE STACK FRAME.
  43. *
  44. ************************
  45. *
  46. *    ADRTBL --
  47. *     THIS MACRO CREATES A TABLE OF ADDRESSES RELATIVE TO
  48. *    THE START OF THE ROM. IT CAN BE CALLED WITH FROM ONE TO
  49. *    FIVE ARGUMENTS, WHICH ARE THE ENTRY POINTS TO TABLES
  50. *    OR ROUTINES IN THE ROM.
  51. *
  52. ADRTBL MACR
  53.  IFEQ NARG-5
  54.   FDB \0-ROMSTR,\1-ROMSTR,\2-ROMSTR,\3-ROMSTR,\4-ROMSTR
  55.   EXIT
  56.  ENDC
  57.  IFEQ NARG-4
  58.   FDB  \0-ROMSTR,\1-ROMSTR,\2-ROMSTR,\3-ROMSTR
  59.   EXIT
  60.  ENDC
  61.  IFEQ NARG-3
  62.   FDB  \0-ROMSTR,\1-ROMSTR,\2-ROMSTR
  63.   EXIT
  64.  ENDC
  65.  IFEQ NARG-2
  66.   FDB  \0-ROMSTR,\1-ROMSTR
  67.   EXIT
  68.  ENDC
  69.  IFEQ NARG-1
  70.   FDB  \0-ROMSTR
  71.   EXIT
  72.  ENDC
  73.  ENDM
  74. *
  75. *    THE FOLLOWING TABLE IS INDEXED BY THE (FUNCTION NUMBER-1)
  76. *    AND CONTAINS THE ADDRESSES OF THE FUNCTION TABLES FOR
  77. *    EACH FLOATING-POINT OPERATION.
  78. *
  79. FUNTBL EQU *
  80.   ADRTBL ADDTBL,SUBTBL,MULTBL,DIVTBL,REMTBL
  81.  ADRTBL   CMPTBL,CMPTBL,CMPTBL,CMPTBL,SQRTBL
  82.  ADRTBL   INTTBL,FIXTBL,FIXTBL,MOVTBL,BNDTBL
  83.  ADRTBL   ABSTBL,NEGTBL
  84.  ADRTBL   DECBIN,FLOAT,FLOAT
  85.  PAGE
  86. *
  87. *
  88. *    ENTER HERE ON DISPAT CALL
  89. *
  90. *     FIRST GET THE ADDRESS OF THE TABLE FOR A PARTICULAR
  91. *    FLOATING-POINT COMMAND.
  92. *
  93. DISPAT EQU *
  94.   LDB FUNCT,U  GET FUNCTION CODE
  95.   ANDB #$3F    MASK OUT OPCODE NBR
  96.   IF B,EQ,#FCSUB
  97.    LDA ARG2,U
  98.    EORA #$80  FOR SUBTRACT, CHANGE SIGN
  99.    STA ARG2,U    AND ADD
  100.   ENDIF
  101.   LEAY    FUNTBL,PCR
  102.   CMPB #FCNOJP    UNLESS OPERATOR HAS NO
  103.   BGE  DSJMP      TABLE
  104.   LDD    B,Y    OFFSET OF FUNCTION LOOKUP
  105.   LEAY    ROMSTR,PCR
  106.   LEAY    D,Y      ADDR IS NOW IN Y
  107. *
  108. *     NOW CREATE OFFSET IN OPERATION
  109. *   TABLE USING TYPES OF OPERANDS. IT IS
  110. *   ASSUMED THAT A NON-EXISTENT ARGUMENT
  111. *   HAS A TYPE OF ZERO.
  112. *
  113.   LDA TYPE1,U
  114.   LDB #5
  115.   MUL
  116.   ADDB TYPE2,U     OFFSET = TYP1*5 + TYP2
  117. *
  118. *     NOW GET PROCESSING ROUTINE OUT
  119. *    OF OPERATION TABLE AND JSR TO IT.
  120. *
  121. DSJMP LDD B,Y
  122.   LEAY ROMSTR,PCR
  123.   JSR  D,Y   JUMP TO PROCESSING SUBROUTINE
  124. *
  125. *   HERE IS COMMON RETURN POINT FOR  ALL
  126. *     PROCESSING ROUTINES.
  127. *
  128.   RTS
  129. *
  130.  PAGE
  131. *
  132. *******************************************
  133. *
  134. *     OPERATION DEFINITION TABLES
  135. *
  136. *     THE FOLLOWING TABLES CONTAIN ADDRESS
  137. *    OF THE SUBROUTINES THAT OPERATE ON
  138. *    ARGUMENTS OF VARIOUS TYPES. THE TABLES
  139. *    ARE ORGANIZED BY COLUMNS, I.E. EACH
  140. *    'ADRTBL' LINE IN A TABLE BELOW CORRESPONDS
  141. *    TO A ROW IN THE TABLE IN THE MOTOROLA SPEC.
  142. *
  143. MULTBL EQU *
  144.   ADRTBL FMUL,RTZERO,RTINF,RTAR1,FMUL
  145.   ADRTBL RTZERO,RTZERO,NAN9,RTAR1,RTZERO
  146.   ADRTBL RTINF,NAN9,RTINF,RTAR1,RTINF
  147.   ADRTBL RTAR2,RTAR2,RTAR2,RTDNAN,RTAR2
  148.   ADRTBL FMUL,RTZERO,RTINF,RTAR1,FMUL
  149. *
  150. *    TABLE FOR ADD/SUBTRACT
  151. *
  152. ADDTBL EQU *
  153. SUBTBL EQU *
  154.   ADRTBL FADD,FADD,RTAR1,RTAR1,FADD
  155.   ADRTBL FADD,CHKZER,RTAR1,RTAR1,RTAR1
  156.   ADRTBL RTAR2,RTAR2,CHKINF,RTAR1,RTAR2
  157.   ADRTBL RTAR2,RTAR2,RTAR2,RTDNAN,RTAR2
  158.   ADRTBL FADD,RTAR2,RTAR1,RTAR1,FADD
  159. *
  160. *   TABLE FOR DIVISION
  161. *
  162. DIVTBL EQU *
  163.   ADRTBL FDIV,RTZERO,RTINF,RTAR1,FDIV
  164.   ADRTBL DIVZER,NAN4,RTINF,RTAR1,DIVZER
  165.   ADRTBL RTZERO,RTZERO,NAN4,RTAR1,RTZERO
  166.   ADRTBL RTAR2,RTAR2,RTAR2,RTDNAN,RTAR2
  167.   ADRTBL NAN4,RTZERO,RTINF,RTAR1,NAN4
  168. *
  169. *    TABLE FOR REMAINDER
  170. *
  171. REMTBL EQU *
  172.   ADRTBL FREM,RTAR1,NAN10,RTAR1,FREM
  173.   ADRTBL NAN10,NAN10,NAN10,RTAR1,NAN10
  174.   ADRTBL RTAR1,RTAR1,NAN10,RTAR1,RTAR1
  175.   ADRTBL RTAR2,RTAR2,RTAR2,RTDNAN,RTAR2
  176.   ADRTBL NAN10,NAN10,NAN10,RTAR1,NAN10
  177. *
  178. *    TABLE FOR SQUARE ROOT
  179. *
  180. SQRTBL EQU *
  181.   ADRTBL FSQRT,RTAR2,SQINCK,RTAR2,NAN1
  182. *
  183. *   TABLE INTEGER PART
  184. *
  185. INTTBL EQU *
  186.   ADRTBL GETINT,RTAR2,RTAR2,RTAR2,GETINT
  187. *
  188. *   TABLE FOR ALL FOUR COMPARE OPERATIONS
  189. *
  190. CMPTBL EQU *
  191.   ADRTBL MAGCMP,MAGCMP,INFAR1,NANCMP,ARG1UN
  192.   ADRTBL MAGCMP,CMPZER,INFAR1,NANCMP,MAGCMP
  193.   ADRTBL INFAR2,INFAR2,CMPINF,NANCMP,INFAR2
  194.   ADRTBL NANCMP,NANCMP,NANCMP,NANCMP,NANCMP
  195.   ADRTBL ARG2UN,MAGCMP,INFAR1,NANCMP,BOTHUN
  196. *
  197. *   TABLE FOR FP-TO-BINARY INTEGER
  198. *
  199. FIXTBL EQU *
  200.   ADRTBL FFIX,RTZERO,BIGINT,NAN3,FFIX
  201. *
  202. *    TABLE FOR FP TO DECIMAL STRING CONVERSION
  203. *
  204. BNDTBL EQU *
  205.   ADRTBL BDCNVT,OUTNDC,OUTNDC,OUTNDC,BDCNVT
  206. *
  207. *     TABLE FOR MOVE OPERATION
  208. *
  209. MOVTBL EQU *
  210.   ADRTBL FMOVE,RTAR2,RTAR2,RTAR2,MOVUN
  211. *
  212. * TABLE FOR ABSOLUTE VALUE FUNCTION
  213. *
  214. ABSTBL EQU  *
  215.   ADRTBL  FABS,FABS,FABS,RTAR2,FABS
  216. *
  217. * TABLE FOR NEGATE FUNTION FUNCTION
  218. *
  219. NEGTBL EQU  *
  220.   ADRTBL  FNEG,FNEG,FNEG,RTAR2,FNEG
  221. *
  222.